home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / bbs / bbbbs85.lha / rexx / bbsArcExt.rexx < prev    next >
OS/2 REXX Batch file  |  1994-09-17  |  3KB  |  100 lines

  1. /* $VER: 8.1 bbsArcExt.rexx (17.9.94)
  2. copyright 1990-94 Richard Lee Stockton FREELY DISTRIBUTABLE
  3.  
  4. Each archive should be no larger than 800,000 bytes
  5. All combined, the uncompressed files must be less than SIZE_LIMIT
  6. */
  7. SIZE_LIMIT=5000000   /* 5 megs */
  8.  
  9. LF='0A'x
  10. PARSE ARG name selected 
  11. IF selected='' THEN EXIT
  12. bbspath=GETCLIP('BBS_path')
  13. CALL CLOSE(STDOUT)
  14. CALL OPEN(STDOUT,'RAM:ArcExt.STDOUT','W')
  15.  
  16. bytes=0
  17. tbytes=0
  18. s.=''
  19. s.0=1
  20. lasti=0
  21. DO i=1 TO WORDS(selected)
  22.   info=STATEF(WORD(selected,i))
  23.   IF info='' THEN ITERATE i
  24.   bytes=bytes+WORD(info,2)
  25.   tbytes=tbytes+WORD(info,2)
  26.   IF tbytes>SIZE_LIMIT THEN LEAVE i
  27.   IF bytes>800000 & (i-lasti)>1 THEN
  28.     DO
  29.       n=s.0
  30.       IF bytes>999999 & WORDS(s.n)>1 THEN i=i-1
  31.       s.0=s.0+1
  32.       lasti=i
  33.       IF bytes>999999 & WORDS(s.n)>1 THEN
  34.         DO
  35.           bytes=0
  36.           ITERATE i
  37.         END
  38.       bytes=0
  39.     END
  40.   n=s.0
  41.   s.n=STRIP(s.n WORD(selected,i))
  42. END
  43.  
  44. fdir=bbspath'EmailFiles/'name
  45. CALL MAKEDIR(fdir)
  46.  
  47. x=OPEN(f,bbspath'Numbers/LastMail','R')
  48. IF x=0 THEN EXIT 25
  49. lastm=READLN(f)
  50. CALL CLOSE(f)
  51. IF DATATYPE(lastm,'W') THEN lastm=lastm+1
  52. ELSE lastm=1
  53.  
  54. DO i=1 TO s.0
  55.   ADDRESS COMMAND 'ECHO >'bbspath'Numbers/LastMail 'lastm
  56.   x=OPEN(f,'RAM:ArcList','W')
  57.   IF x=0 THEN EXIT 26
  58.   CALL WRITELN(f,s.i) /* list in a file can be of unlimited length */
  59.   CALL CLOSE(f)
  60.   OPTIONS FAILAT 999
  61.   comm='LhA -2amNrZ a' fdir'/BBBBS_'lastm'.lha @RAM:ArcList'
  62.   ADDRESS COMMAND comm
  63.   temp=WORD(s.i,WORDS(s.i))
  64.   dev=LEFT(temp,POS(':',temp)-1)
  65.   x=OPEN(f,fdir'/BBBBS_'lastm'.lha.xdl','W')
  66.   IF x=0 THEN EXIT 27
  67.   CALL WRITELN(f,dev)
  68.   CALL WRITELN(f,WORDS(s.i))
  69.   CALL CLOSE(f)
  70.   x=OPEN(f,bbspath'Email/'name'/BBBBS.'lastm,'W')
  71.   IF x=0 THEN EXIT 28
  72.   CALL WRITELN(f,' Mail: 'lastm'   FILE: BBBBS_'lastm'.lha')
  73.   CALL WRITELN(f,' From: BBBBS')
  74.   CALL WRITELN(f,'   To: 'name)
  75.   temp=' Subj: Archive of selected external device files'
  76.   IF s.0>1 THEN temp=temp', part' i 'of' s.0'.'
  77.   CALL WRITELN(f,temp)
  78.   CALL WRITELN(f,' Date: 'DATE('W') DATE() TIME('C'))
  79.   CALL WRITELN(f,LEFT('=',75,'='))
  80.   CALL WRITELN(f,'Here is the archive of files you requested.')
  81.   DO j=1 TO WORDS(s.i)
  82.     CALL WRITELN(f,WORD(s.i,j))
  83.   END
  84.   IF i=s.0 & tbytes>SIZE_LIMIT THEN
  85.     CALL WRITELN(f,SIZE_LIMIT 'byte size limit exceeded! Other files ignored.')
  86.   CALL CLOSE(f)
  87.   lastm=lastm+1
  88. END
  89.  
  90. newmess='Your file archive is waiting in Email.'
  91. IF GETCLIP('BBS_level')~='' & WORD(GETCLIP('BBS_lastcaller'),1)=name THEN
  92.   DO
  93.     oldmess=GETCLIP('BBS_MESSAGE')
  94.     IF oldmess~='' THEN oldmess=oldmess||'0D0A'x
  95.     CALL SETCLIP('BBS_MESSAGE',oldmess||newmess)
  96.   END
  97. IF GETCLIP('BBS_LOCAL')=name THEN CALL SETCLIP('BBS_LOCAL_MSG',newmess)
  98.  
  99. /* bbsArcExt.rexx */
  100.